home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Magazine / Online / MagPLIP / source / magplip.i < prev    next >
Text File  |  1998-04-01  |  6KB  |  251 lines

  1.    IFND    MAGPLIP_I
  2. MAGPLIP_I     SET     1
  3.  
  4. ;
  5. ;  $VER: magplip.i 1.9 (01 Apr 1998)
  6. ;
  7. ;  magplip.device - Parallel Line Internet Protocol
  8. ;
  9. ;  Original code written by Oliver Wagner and Michael Balzer.
  10. ;
  11. ;  This version has been completely reworked by Marius Gröger, introducing
  12. ;  slight protocol changes. The new source is a lot better organized and
  13. ;  maintainable.
  14. ;
  15. ;  Additional changes and code cleanup by Jan Kratochvil and Martin Mares.
  16. ;  The new source is significantly faster and yet better maintainable.
  17. ;
  18. ;  (C) Copyright 1993-1994 Oliver Wagner & Michael Balzer
  19. ;  (C) Copyright 1995 Jan Kratochvil & Martin Mares
  20. ;  (C) Copyright 1995-1996 Marius Gröger
  21. ;      All Rights Reserved
  22. ;
  23. ;  $HISTORY:
  24. ;
  25. ;  01 Apr 1998 : 001.009 :  integrated modifications for linPLIP from Stephane
  26. ;  10 Apr 1996 : 001.008 :  + PLIPF_REPLYSS didn't fit into byte
  27. ;                           + pb_ExtFlags
  28. ;  29 Mar 1996 : 001.007 :  changed copyright note
  29. ;  30 Dec 1995 : 001.006 :  single dynamic frame buffer
  30. ;  29 Dec 1995 : 001.005 :  + pb_Startup
  31. ;                        :  + new flag PLIPF_REPLYSS
  32. ;  03 Sep 1995 : 001.004 :  + removed PLIP(F|B)_SIDEA
  33. ;                           + hardware addressing fields in PLIPBase
  34. ;  30 Aug 1995 : 001.003 :  changed to match magplip.h
  35. ;  20 Aug 1995 : 001.002 :  + ASM parts really don't need to know about the
  36. ;                             configuration defaults.
  37. ;                           + using BITDEF macro from exec/types.i
  38. ;  13 Aug 1995 : 001.001 :  code cleanup
  39. ;  12 Feb 1995 : 001.000 :  created
  40. ;
  41.  
  42.  
  43.     IFND EXEC_TYPES_I
  44.     INCLUDE "exec/types.i"
  45.     ENDC
  46.  
  47.     IFND EXEC_LISTS_I
  48.     INCLUDE "exec/lists.i"
  49.     ENDC
  50.  
  51.     IFND EXEC_INTERRUPTS_I
  52.     INCLUDE "exec/interrupts.i"
  53.     ENDC
  54.  
  55.     IFND EXEC_LIBRARIES_I
  56.     INCLUDE "exec/libraries.i"
  57.     ENDC
  58.  
  59.     IFND EXEC_SEMAPHORES_I
  60.     INCLUDE "exec/semaphores.i"
  61.     ENDC
  62.  
  63.     IFND DEVICES_TIMER_I
  64.     INCLUDE "devices/timer.i"
  65.     ENDC
  66.  
  67.     IFND DEVICES_SANA2_I
  68.     INCLUDE "devices/sana2.i"
  69.     ENDC
  70.  
  71.     IFND DOS_DOS_I
  72.     INCLUDE "dos/dos.i"
  73.     ENDC
  74.  
  75.  
  76. ;****************************************************************************
  77.  
  78.  
  79. PLIP_MAXMTU         equ 8192
  80. PLIP_ADDRFIELDSIZE  equ 1
  81.  
  82.  
  83. ;****************************************************************************
  84.  
  85.  
  86.    ; Each data packet is put into this kind of frame before sent over the
  87.    ; line. See below for definitions.
  88.    ;
  89.  
  90.  IFD LINPLIP
  91.  ; linux version
  92. ETH_ALEN        equ     6
  93.  
  94.    STRUCTURE PLIPFrame,0
  95.      SHORT    pf_Size
  96.      STRUCT   pf_DstAddr,ETH_ALEN
  97.      STRUCT   pf_SrcAddr,ETH_ALEN
  98.      UWORD    pf_Type
  99. ;*** UBYTE    pf_Data[MTU];
  100.      LABEL PLIPFrame_SIZE
  101.  
  102. PKTFRAMESIZE_1   equ     2
  103. PKTFRAMESIZE_2   equ     (2+2*ETH_ALEN)
  104.  
  105.  ENDC
  106.  
  107.  IFND LINPLIP
  108.    ; original version
  109.    STRUCTURE PLIPFrame,0
  110.      USHORT   pf_Sync
  111.      SHORT    pf_Size
  112.      USHORT   pf_CRC
  113.      ULONG    pf_Type
  114. ;*** UBYTE    pf_Data[MTU];
  115.      LABEL PLIPFrame_SIZE
  116.  
  117. PKTFRAMESIZE_1   equ     4
  118. PKTFRAMESIZE_2   equ     6
  119.  
  120.  ENDC
  121.  
  122. SYNCBYTE_HEAD    equ     $42
  123. SYNCBYTE_CRC     equ     $01
  124. SYNCBYTE_NOCRC   equ     $02
  125. SYNCWORD_CRC     equ     ((SYNCBYTE_HEAD<<8)|SYNCBYTE_CRC)
  126. SYNCWORD_NOCRC   equ     ((SYNCBYTE_HEAD<<8)|SYNCBYTE_NOCRC)
  127.  
  128.  
  129. ;****************************************************************************
  130.  
  131.  
  132. S2SS_TXERRORS     equ 0
  133. S2SS_COLLISIONS   equ 1
  134. S2SS_COUNT        equ 2
  135.  
  136.  
  137. S2SS_PLIP_TXERRORS equ ((((S2WireType_PLIP) & $ffff) << 16) ! S2SS_TXERRORS)
  138. S2SS_PLIP_COLLISIONS equ ((((S2WireType_PLIP) & $ffff) << 16) ! S2SS_COLLISIONS)
  139.  
  140.  
  141. ;****************************************************************************
  142.  
  143.  
  144.    ;
  145.    ; Central driver static storage. See Flags bits below.
  146.    ;
  147.    STRUCTURE PLIPBase,LIB_SIZE
  148.      UBYTE  pb_Unit
  149.      UBYTE  pb_pad1
  150.      BPTR   pb_SegList
  151.      APTR   pb_MiscBase
  152.      APTR   pb_CIAABase
  153.      APTR   pb_UtilityBase
  154.      APTR   pb_TimerBase
  155.      APTR   pb_DOSBase
  156.      APTR   pb_SysBase
  157.      APTR   pb_Startup
  158.      APTR   pb_Server
  159.      APTR   pb_Task
  160.      STRUCT pb_Interrupt,IS_SIZE
  161.      ULONG  pb_IntSig
  162.      ULONG  pb_IntSigMask
  163.      ULONG  pb_ServerStoppedSigMask
  164.      APTR   pb_ServerPort
  165.      APTR   pb_TimeoutPort
  166.      APTR   pb_CollPort
  167.      STRUCT pb_TimeoutReq,IOTV_SIZE
  168.      STRUCT pb_CollReq,IOTV_SIZE
  169.      STRUCT pb_DevStats,S2DS_SIZE
  170.      STRUCT pb_SpecialStats,S2SSR_SIZE*S2SS_COUNT
  171.      STRUCT pb_ReadList,LH_SIZE
  172.      STRUCT pb_WriteList,LH_SIZE
  173.      STRUCT pb_EventList,LH_SIZE
  174.      STRUCT pb_ReadOrphanList,LH_SIZE
  175.      STRUCT pb_TrackList,LH_SIZE
  176.      STRUCT pb_BufferManagement,LH_SIZE
  177.      STRUCT pb_EventListSem,SS_SIZE
  178.      STRUCT pb_ReadListSem,SS_SIZE
  179.      STRUCT pb_WriteListSem,SS_SIZE
  180.      STRUCT pb_TrackListSem,SS_SIZE
  181.      STRUCT pb_ReadOrphanListSem,SS_SIZE
  182.      STRUCT pb_Lock,SS_SIZE
  183.      ULONG  pb_Retries
  184.      ULONG  pb_ReportBPS
  185.      ULONG  pb_MTU
  186.      ULONG  pb_AllocFlags
  187.      ULONG  pb_Timeout;
  188.      LONG   pb_CollisionDelay
  189.      LONG   pb_ArbitrationDelay
  190.      UBYTE  pb_TimeoutSet
  191.      UBYTE  pb_Flags
  192.      UWORD  pb_ExtFlags
  193.      APTR   pb_OldExceptCode
  194.      APTR   pb_OldExceptData
  195.      ULONG  pb_OldExcept
  196.  IFND LINPLIP
  197.      STRUCT pb_HandshakeMask,2              ; must be changed when
  198.      STRUCT pb_HandshakeBit,2               ; changing the datatype in .h
  199.      STRUCT pb_SrcAddr,PLIP_ADDRFIELDSIZE
  200.      STRUCT pb_DstAddr,PLIP_ADDRFIELDSIZE
  201.  ENDC
  202.      APTR   pb_Frame
  203.    LABEL PLIPBase_SIZE
  204.  
  205. ;
  206. ; Bits for PLIPBase->pb_Flags
  207. ;
  208.    BITDEF PLIP,REPLYSS,0
  209.    BITDEF PLIP,EXCLUSIVE,1
  210.    BITDEF PLIP,NOTCONFIGURED,2
  211.    BITDEF PLIP,OFFLINE,3
  212.    BITDEF PLIP,SENDCRC,4
  213.    BITDEF PLIP,RECEIVING,5
  214.    BITDEF PLIP,COLLISION,6
  215.    BITDEF PLIP,SERVERSTOPPED,7
  216.  
  217. ;
  218. ; Bits for PLIPBase->pb_ExtFlags
  219. ;
  220.    BITDEF PLIPE,NOSPECIALSTATS,0
  221.    BITDEF PLIPE,NIBBLEACK,1                 ; only used by linport.asm
  222.  
  223.    ;
  224.    ; Index for PLIPBase->pb_HandshakeBit[]
  225.    ; Note: in contrast to the C-Version, this is actually not the index
  226.    ; but the offset in the array _in_bytes_. Therefore, if you change the
  227.    ; array's datatype, you need to adjust this.
  228.    ;
  229. HS_LINE    equ 0
  230. HS_REQUEST equ 1  ; better: 1*sizeof(UBYTE)
  231.  
  232.  
  233. ;****************************************************************************
  234.  
  235.    ;
  236.    ; Why isn't this in exec/types.i ?
  237.    ;
  238.  
  239.    IFND TRUE
  240. TRUE  equ 1
  241.    ENDC
  242.    IFND FALSE
  243. FALSE equ 0
  244.    ENDC
  245.  
  246.  
  247. ;****************************************************************************
  248.  
  249.  
  250.    ENDC MAGPLIP_I
  251.